#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e6 + 10;
int h[N];
int n, p, q, sum;
signed main()
{
    cin >> n >> p >> q;
    priority_queue<int> heap; // 大根堆
    for (int i = 0; i < n; i++)
    {
        cin >> h[i];
        sum += h[i];
        heap.push(h[i]); // 每次去堆顶元素
    }
    while (!heap.empty())
    {
        int tem1 = heap.top();
        heap.pop();
        // 如果最高已经变为0其他就没必要进行了
        if (tem1 == 0)
            break;
        // 每次有两种选择

        if (p == 0 && q == 0)
            break;
        int tem2 = sqrt(tem1);
        int tem3 = tem1 / 2;
        if (p && q)
        {
            if (tem2 < tem3)
            {
                p--;
                sum -= tem1 - tem2;
                heap.push(tem2);
            }
            else
            {
                q--;
                sum -= tem1 - tem3;
                heap.push(tem3);
            }
        }
        else if (p)
        {
            p--;
            sum -= tem1 - tem2;
            heap.push(tem2);
        }
        else
        {
            q--;
            sum -= tem1 - tem3;
            heap.push(tem3);
        }
    }
    cout << sum;

    return 0;
}